package cn.good.yan.colle5;

import java.util.*;

/**
 * 5. 集合工厂方法
 *
 * @author shengren.yan
 * @create 2023-05-01
 */
public class CollectionMap {

    public static void main(String[] args) {

        // jdk8 之前写法 创建只读的集合
        List<Integer> list1 = Collections.unmodifiableList(Arrays.asList(1, 3, 4));
//        list1.add(5); // 会报错
        // 只读
        Set<Integer> set1 = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(1, 3, 4)));
//        set1.add(5); // 会报错

        Map<Object, Object> map1 = Collections.unmodifiableMap(new HashMap<>() {
            {
                put("Tom", 19);
                put("Tim", 25);
            }
        });
//        map1.forEach((k, v) -> System.out.println(k + " -> " + v));

        // jdk9 的写法：创建只读的集合
        List<Integer> list2 = List.of(1, 3, 4);
//        list2.add(5); // 会报错
        // 只读
        Set<Integer> set2 = Set.of(2, 3, 4);
//        set2.add(5); // 会报错

        // 方式1 只读map
        Map<String, Integer> map2 = Map.of("Tom", 12, "Jom", 23);
        map2.forEach((k, v) -> System.out.println(k + " -> " + v));
        // 方式2  只读map
        Map<String, Integer> map3 = Map.ofEntries(Map.entry("TT", 14), Map.entry("MK", 39));
        map3.forEach((k, v) -> System.out.println(k + " -> " + v));

    }

}
